package com.zhukaiyuan.oauth2.sys.controller;

import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * 注销
 *
 * @author Lusifer
 * @since v1.0.0
 */
@RestController
@RequestMapping(value = "/sys/logout")
public class LogoutController {
    @Resource
    public TokenStore tokenStore;

    /**
     * 注销用户
     *
     * @return
     */
    @PostMapping
    public String users(String token) {
        return logout(token);
    }

    // 私有方法 ------------------------------------------- Begin

    private String logout(String token) {

        // 删除 token 以注销
        OAuth2AccessToken oAuth2AccessToken = tokenStore.readAccessToken(token);
        if (null != oAuth2AccessToken) {
            tokenStore.removeAccessToken(oAuth2AccessToken);
            return "SUCCESS";
        }

        return "FAILURE";
    }
}